---
title: [RFC] Caching streams using Redis
author: notabug.org/biodantas
time: Tue, 13 Aug 2019 19:15:29 UTC
status: open
---

author: notabug.org
time: Tue, 13 Aug 2019 19:15:29 UTC
content: -----
Like Chimo pointed out in an issue in their Redis plugin for GNU social (now integrated), seen [here](https://github.com/chimo/gs-rediscache/issues/2) it should be possible to cache notice streams. To this effect, it's necessary to > figure out which `:user/all` streams to invalidate when new notices are added/deleted. A good starting point might be to get every local user who is subscribed to the author of the inserted/deleted notice, and invalidate their `:user/all` streams. I don't have much experience with this type of thing and would appreciate some insight on the best way to do it.
-----

author: notabug.org
time: Thu, 15 Aug 2019 13:58:56 UTC
content: -----
I'm not sure about why just local users... But, if only local users are relevant, there are events like onNoticeDistribute that you can catch for handling the proposed logic...
-----

author: notabug.org
time: Thu, 15 Aug 2019 15:23:35 UTC
content: -----
I don't think what Chimo meant was that only local users are relevant. I think it was just that they weren't entirely sure how it should be handled. But I agree that we could simply invalidate the caches of all users who follow the author.
-----

author: notabug.org
time: Thu, 15 Aug 2019 21:30:02 UTC
content: -----
Ah, sorry, I had misread. @local_user posts @another_local_user is subscribed to @local_user thus his notice stream is invalidated @remote_user posts @local_user is subscribed to @remote_user thus his notice stream is invalidated --- So, essentially, you need the attention profiles for every saved notice. I guess you will want the [StartNoticeSave](https://notabug.org/diogo/gnu-social/src/nightly/classes/Notice.php#L708) event and the [getAttentionProfiles()](https://notabug.org/diogo/gnu-social/src/nightly/classes/Notice.php#L1868) method.
-----
